#pragma once

#include "Log.hpp"
#include "Err.hpp"
#include "Epoll.hpp"
#include "Sock.hpp"
#include <functional>

namespace zxf
{
    static const uint16_t defaultport = 8888;
    static const int defaultnum = 64;

    class Reactorserver
    {
        using func_t = std::function<std::string(std::string &)>;

    public:
        Reactorserver(uint16_t port = defaultport): _port(port)
        {
        }
        ~Reactorserver()
        {
        }

    private:
        uint16_t _port;            // 端口
        Sock _sock;                // 创建Sock对象
        Epoll _epoll;              // 创建Epoll对象
        struct epoll_event *_revs; // 就绪事件列表
        int _num;                  // 就绪事件最大个数 // 自定义
        func_t _func;              // 回调函数
    };
}